home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / RIncludes / Balloons.r < prev    next >
Encoding:
Text File  |  1998-08-17  |  25.6 KB  |  595 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Balloons.r
  3.  
  4.      Contains:    Balloon Help Package Interfaces.
  5.  
  6.      Version:    Technology:    System 7.0
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1990-1993, 1995-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17.  
  18. #ifndef __BALLOONS_R__
  19. #define __BALLOONS_R__
  20.  
  21. #ifndef __CONDITIONALMACROS_R__
  22. #include "ConditionalMacros.r"
  23. #endif
  24.  
  25. #define hmBalloonHelpVersion             0x0002                /*  The real version of the Help Manager  */
  26. #define kHMHelpMenuID                     (-16490)            /*  Resource ID and menu ID of help menu  */
  27. #define kHMAboutHelpItem                 1                    /*  help menu item number of About Balloon Help…  */
  28. #define kHMShowBalloonsItem             3                    /*  help menu item number of Show/Hide Balloons  */
  29. #define kHMHelpID                         (-5696)                /*  ID of various Help Mgr package resources (in Pack14 range)  */
  30. #define kBalloonWDEFID                     126                    /*  Resource ID of the WDEF proc used in standard balloons  */
  31.  
  32.                                                             /*  Options for Help Manager resources in 'hmnu', 'hdlg', 'hrct', 'hovr', & 'hfdr' resources  */
  33. #define hmDefaultOptions                 0                    /*  default options for help manager resources  */
  34. #define hmUseSubID                         1                    /*  treat resID's in resources as subID's of driver base ID (for Desk Accessories)  */
  35. #define hmAbsoluteCoords                 2                    /*  ignore window port origin and treat rectangles as absolute coords (local to window)  */
  36.  
  37. #define hmSaveBitsNoWindow                 4                    /*  don't create a window, just blast bits on screen. No update event is generated  */
  38. #define hmSaveBitsWindow                 8                    /*  create a window, but restore bits behind window when window goes away & generate update event  */
  39. #define hmMatchInTitle                     16                    /*  for hwin resources, match string anywhere in window title string  */
  40.  
  41.  
  42. #define HelpMgrVersion            2            /* version of Help Manager */
  43.  
  44. /* Generic defines for the switch items used in 'hrct', 'hmnu', & 'hdlg's    */
  45. #define    HMStringItemID            1            /* pstring is used in help message */
  46. #define    HMPictItemID            2            /* 'PICT' resource ID is used in help message */
  47. #define    HMStringResItemID        3            /* 'STR#' resource ID and index is used in help message */
  48. #define HMTEResItemID            6            /* Styled Text Edit resources are used in help message */
  49. #define HMSTRResItemID            7            /* 'STR ' resource ID is used in help message */
  50. #define HMSkipItemID            256            /* don't display a balloon */
  51. #define HMCompareItemID            512            /* for hmnu resources, compare menu item to string and use help msg if match */
  52. #define HMNamedResourceID        1024        /* for hmnu resources, use menu item as call to GetNamedResource() to fetch resource */
  53. #define HMTrackCntlID            2048        /* not yet implemented, reserved */
  54.  
  55. /*----------------------------hmnu • Help Mgr Menu Balloon Template----------------------------*/
  56.  
  57. type 'hmnu' {
  58.         integer;                                    /* Help Version */
  59.         longint;                                    /* Options */
  60.         integer;                                    /* Balloon ProcID */
  61.         integer;                                     /* Balloon variant */
  62.         integer = $$CountOf(HMenuArray);            /* Count of menu items (below) */
  63.  
  64.         switch {            /* Special Message for missing array items */
  65.                 case HMStringItem:
  66. hmnuMissStringBeg:        integer = (hmnuMissStringEnd - hmnuMissStringBeg) / 8;
  67.                         key int = HMStringItemID;
  68.                         pstring;            /* missing HMenuArray items (Enabled)  */
  69.                         pstring;            /* missing HMenuArray items (Disabled)  */
  70.                         pstring;            /* missing HMenuArray items (checked) */
  71.                         pstring;            /* missing HMenuArray items (other)  */
  72.                         align word;            /* always word align the code for the pstring */
  73. hmnuMissStringEnd:                        
  74.                 case HMPictItem:
  75. hmnuMissPictBeg:        integer = (hmnuMissPictEnd - hmnuMissPictBeg) / 8;
  76.                         key int = HMPictItemID;
  77.                         integer;            /* use for missing HMenuArray items  */
  78.                         integer;            /* use for missing HMenuArray items  */
  79.                         integer;            /* use for missing HMenuArray items  */
  80.                         integer;            /* use for missing HMenuArray items  */
  81. hmnuMissPictEnd:
  82.                 case HMStringResItem:
  83. hmnuMissStringResBeg:    integer = (hmnuMissStringResEnd - hmnuMissStringResBeg) / 8;
  84.                         key int = HMStringResItemID;
  85.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  86.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  87.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  88.                         integer; integer;    /* Miss or 0 HMenuArray STR# res ID, index # */
  89. hmnuMissStringResEnd:
  90.                 case HMTEResItem:
  91. hmnuMissTEResBeg:        integer = (hmnuMissTEResEnd - hmnuMissTEResBeg) / 8;
  92.                         key int = HMTEResItemID;
  93.                         integer;            /* use for missing HMenuArray items */
  94.                         integer;            /* use for missing HMenuArray items */
  95.                         integer;            /* use for missing HMenuArray items */
  96.                         integer;            /* use for missing HMenuArray items */
  97. hmnuMissTEResEnd:
  98.                 case HMSTRResItem:
  99. hmnuMissSTRResBeg:        integer = (hmnuMissSTRResEnd - hmnuMissSTRResBeg) / 8;
  100.                         key int = HMSTRResItemID;
  101.                         integer;            /* use for missing HMenuArray items */
  102.                         integer;            /* use for missing HMenuArray items */
  103.                         integer;            /* use for missing HMenuArray items */
  104.                         integer;            /* use for missing HMenuArray items */
  105. hmnuMissSTRResEnd:
  106.                 case HMSkipItem:
  107. hmnuMissSkipBeg:        integer = (hmnuMissSkipEnd - hmnuMissSkipBeg) / 8;
  108.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  109. hmnuMissSkipEnd:                        
  110.             };
  111.             
  112.         array HMenuArray {
  113.                 switch {
  114.                     case HMStringItem:
  115. hmnuStringBeg:            integer = (hmnuStringEnd[$$ArrayIndex(HMenuArray)] - hmnuStringBeg[$$ArrayIndex(HMenuArray)]) / 8;
  116.                         key int = HMStringItemID;
  117.                         pstring;            /* Enabled menu message string  */
  118.                         pstring;            /* Disabled menu message string */
  119.                         pstring;            /* Checked menu message string */
  120.                         pstring;            /* other menu message string */
  121.                         align word;
  122. hmnuStringEnd:                        
  123.                     case HMPictItem:
  124. hmnuPictBeg:            integer = (hmnuPictEnd[$$ArrayIndex(HMenuArray)] - hmnuPictBeg[$$ArrayIndex(HMenuArray)]) / 8;
  125.                         key int = HMPictItemID;
  126.                         integer;            /* Enabled menu message pict ID  */
  127.                         integer;            /* Disabled menu message pict ID */
  128.                         integer;            /* Checked menu message pict ID */
  129.                         integer;            /* other menu message pict ID */        
  130. hmnuPictEnd:                                                
  131.                     case HMStringResItem:
  132. hmnuStringResBeg:        integer = (hmnuStringResEnd[$$ArrayIndex(HMenuArray)] - hmnuStringResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  133.                         key int = HMStringResItemID;
  134.                         integer; integer;    /* Enabled STR# res ID, index # */
  135.                         integer; integer;    /* Disabled STR# res ID, index # */
  136.                         integer; integer;    /* Checked menu message STR# res ID, index # */
  137.                         integer; integer;    /* other menu message STR# res ID, index # */
  138. hmnuStringResEnd:                        
  139.                     case HMTEResItem:
  140. hmnuTEResBeg:            integer = (hmnuTEResEnd[$$ArrayIndex(HMenuArray)] - hmnuTEResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  141.                         key int = HMTEResItemID;
  142.                         integer;            /* Enabled menu message TERes ID */
  143.                         integer;            /* Disabled menu message TERes ID */
  144.                         integer;            /* Checked message TERes ID */
  145.                         integer;            /* other menu message TERes ID */    
  146. hmnuTEResEnd:                        
  147.                     case HMSTRResItem:
  148. hmnuSTRResBeg:            integer = (hmnuSTRResEnd[$$ArrayIndex(HMenuArray)] - hmnuSTRResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  149.                         key int = HMSTRResItemID;
  150.                         integer;            /* Enabled menu message STR ID */
  151.                         integer;            /* Disabled menu message STR ID */
  152.                         integer;            /* Checked message STR ID */
  153.                         integer;            /* other menu message STR ID */    
  154. hmnuSTRResEnd:                        
  155.                     case HMSkipItem:
  156. hmnuSkipBeg:            integer = (hmnuSkipEnd[$$ArrayIndex(HMenuArray)] - hmnuSkipBeg[$$ArrayIndex(HMenuArray)]) / 8;
  157.                         key int = HMSkipItemID;
  158. hmnuSkipEnd:                        
  159.                     case HMCompareItem:
  160. hmnuCompareBeg:            integer = (hmnuCompareEnd[$$ArrayIndex(HMenuArray)] - hmnuCompareBeg[$$ArrayIndex(HMenuArray)]) / 8;
  161.                         key int = HMCompareItemID;
  162.                         pstring;            /* if itemstr matches, use this item, else goto next item */
  163.                         align word;
  164.                         
  165.                         switch {                    /* case the message type */
  166.                     
  167.                             case HMStringItem:
  168.                                 key int = HMStringItemID;
  169.                                 pstring;            /* Enabled menu message string  */
  170.                                 pstring;            /* Disabled menu message string */
  171.                                 pstring;            /* Checked menu message string */
  172.                                 pstring;            /* other menu message string */
  173.                                 align word;
  174.  
  175.                             case HMPictItem:
  176.                                 key int = HMPictItemID;
  177.                                 integer;            /* Enabled menu message pict ID  */
  178.                                 integer;            /* Disabled menu message pict ID */
  179.                                 integer;            /* Checked menu message pict */
  180.                                 integer;            /* other menu message pict */        
  181.  
  182.                             case HMStringResItem:
  183.                                 key int = HMStringResItemID;
  184.                                 integer; integer;    /* Enabled STR# res ID, index # */
  185.                                 integer; integer;    /* Disabled STR# res ID, index # */
  186.                                 integer; integer;    /* Checked menu message STR# res ID, index # */
  187.                                 integer; integer;    /* other menu message STR# res ID, index # */
  188.  
  189.                             case HMTEResItem:
  190.                                 key int = HMTEResItemID;
  191.                                 integer;            /* Enabled menu message TERes ID */
  192.                                 integer;            /* Disabled menu message TERes ID */
  193.                                 integer;            /* Checked menu message TERes ID */
  194.                                 integer;            /* other menu message TERes ID */    
  195.  
  196.                             case HMSTRResItem:
  197.                                 key int = HMSTRResItemID;
  198.                                 integer;            /* Enabled menu message STR ID */
  199.                                 integer;            /* Disabled menu message STR ID */
  200.                                 integer;            /* Checked menu message STR ID */
  201.                                 integer;            /* other menu message STR ID */    
  202.  
  203.                             case HMSkipItem:
  204.                                 key int = HMSkipItemID;
  205.                         };
  206. hmnuCompareEnd:                
  207.                     case HMNamedResourceItem:
  208. hmnuNamedResBeg:        integer = (hmnuNamedResEnd[$$ArrayIndex(HMenuArray)] - hmnuNamedResBeg[$$ArrayIndex(HMenuArray)]) / 8;
  209.                         key int = HMNamedResourceID;
  210.                         literal longint;    /*    res type of resource to fetch, using item name    */
  211. hmnuNamedResEnd:                        
  212.                 };
  213.         };
  214. };
  215.  
  216. /*----------------------------hdlg • Help Mgr Dialog Balloon Template--------------------------*/
  217. type 'hdlg' {
  218.         integer;                                    /* Help Version */
  219.         integer;                                    /* item # (0-based) of first DITL item */
  220.         longint;                                    /* Options    */
  221.         integer;                                    /* Balloon ProcID */
  222.         integer;                                     /* Balloon variant */
  223.         
  224.         integer = $$CountOf(HDialogArray);            /* Count of HDialogArray items    */
  225.         
  226.         switch {            /* Special Messages for missing array items */
  227.                 case HMStringItem:
  228. hdlgMissStringBeg:        integer = (hdlgMissStringEnd - hdlgMissStringBeg) / 8;
  229.                         key int = HMStringItemID;
  230.                         point;                            /* tip            */
  231.                         rect;                            /* hotRect        */
  232.                         pstring;            /* use for missing HDialogArray items  */
  233.                         pstring;            /* use for missing HDialogArray items  */
  234.                         pstring;            /* use for missing HDialogArray items  */
  235.                         pstring;            /* use for missing HDialogArray items  */
  236.                         align word;            /* always word align the code for the pstring */
  237. hdlgMissStringEnd:                        
  238.                 case HMPictItem:
  239. hdlgMissPictBeg:        integer = (hdlgMissPictEnd - hdlgMissPictBeg) / 8;
  240.                         key int = HMPictItemID;
  241.                         point;                            /* tip            */
  242.                         rect;                            /* hotRect        */
  243.                         integer;            /* use for missing HDialogArray items  */
  244.                         integer;            /* use for missing HDialogArray items  */
  245.                         integer;            /* use for missing HDialogArray items  */
  246.                         integer;            /* use for missing HDialogArray items  */
  247. hdlgMissPictEnd:
  248.                 case HMStringResItem:
  249. hdlgMissStringResBeg:    integer = (hdlgMissStringResEnd - hdlgMissStringResBeg) / 8;
  250.                         key int = HMStringResItemID;
  251.                         point;                            /* tip            */
  252.                         rect;                            /* hotRect        */
  253.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  254.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  255.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  256.                         integer; integer;    /* Miss or 0 HDialogArray STR# res ID, index # */
  257. hdlgMissStringResEnd:
  258.                 case HMTEResItem:
  259. hdlgMissTEResBeg:        integer = (hdlgMissTEResEnd - hdlgMissTEResBeg) / 8;
  260.                         key int = HMTEResItemID;
  261.                         point;                            /* tip            */
  262.                         rect;                            /* hotRect        */
  263.                         integer;            /* use for missing HDialogArray items */
  264.                         integer;            /* use for missing HDialogArray items */
  265.                         integer;            /* use for missing HDialogArray items */
  266.                         integer;            /* use for missing HDialogArray items */
  267. hdlgMissTEResEnd:
  268.                 case HMSTRResItem:
  269. hdlgMissSTRResBeg:        integer = (hdlgMissSTRResEnd - hdlgMissSTRResBeg) / 8;
  270.                         key int = HMSTRResItemID;
  271.                         point;                            /* tip            */
  272.                         rect;                            /* hotRect        */
  273.                         integer;            /* use for missing HDialogArray items */
  274.                         integer;            /* use for missing HDialogArray items */
  275.                         integer;            /* use for missing HDialogArray items */
  276.                         integer;            /* use for missing HDialogArray items */
  277. hdlgMissSTRResEnd:
  278.                 case HMSkipItem:
  279. hdlgMissSkipBeg:        integer = (hdlgMissSkipEnd - hdlgMissSkipBeg) / 8;
  280.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  281. hdlgMissSkipEnd:                        
  282.             };
  283.  
  284.         /* this is an array of records corresponding to dialog items in a dialog */
  285.         array HDialogArray {
  286.                 switch {
  287.                     case HMStringItem:
  288. hdlgStringBeg:            integer = (hdlgStringEnd[$$ArrayIndex(HDialogArray)] - hdlgStringBeg[$$ArrayIndex(HDialogArray)]) / 8;
  289.                         key int = HMStringItemID;        /* helpType        */
  290.                         point;                            /* tip            */
  291.                         rect;                            /* hotRect        */
  292.                         pstring;        /* Enabled dialog item message string    */
  293.                         pstring;        /* Disabled dialog item message string    */
  294.                         pstring;        /* Checked dialog item message string    */
  295.                         pstring;        /* other dialog item message string        */
  296.                         align word;        /* always word align the code */
  297. hdlgStringEnd:                        
  298.                     case HMPictItem:
  299. hdlgPictBeg:            integer = (hdlgPictEnd[$$ArrayIndex(HDialogArray)] - hdlgPictBeg[$$ArrayIndex(HDialogArray)]) / 8;
  300.                         key int = HMPictItemID;            /* helpType        */
  301.                         point;                            /* tip            */
  302.                         rect;                            /* hotRect        */
  303.                         integer;        /* Enabled dialog item message pict ID    */
  304.                         integer;        /* Disabled dialog item message pict ID    */
  305.                         integer;        /* Checked dialog item message pict ID    */
  306.                         integer;        /* other dialog item message pict ID     */    
  307. hdlgPictEnd:                        
  308.                     case HMStringResItem:
  309. hdlgStringResBeg:        integer = (hdlgStringResEnd[$$ArrayIndex(HDialogArray)] - hdlgStringResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  310.                         key int = HMStringResItemID;    /* helpType        */
  311.                         point;                            /* tip            */
  312.                         rect;                            /* hotRect        */
  313.                         integer; integer;    /* Enabled STR# res ID, index #        */
  314.                         integer; integer;    /* Disabled STR# res ID, index #    */
  315.                         integer; integer;    /* Checked STR# res ID, index #        */
  316.                         integer; integer;    /* other STR# res ID, index #        */
  317. hdlgStringResEnd:                        
  318.                     case HMTEResItem:
  319. hdlgTEResBeg:            integer = (hdlgTEResEnd[$$ArrayIndex(HDialogArray)] - hdlgTEResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  320.                         key int = HMTEResItemID;        /* helpType        */
  321.                         point;                            /* tip            */
  322.                         rect;                            /* hotRect        */
  323.                         integer;        /* Enabled dialog item message TERes ID */
  324.                         integer;        /* Disabled item message TERes ID        */
  325.                         integer;        /* Checked item message TERes ID        */
  326.                         integer;        /* other item message TERes ID            */    
  327. hdlgTEResEnd:                        
  328.                     case HMSTRResItem:
  329. hdlgSTRResBeg:            integer = (hdlgSTRResEnd[$$ArrayIndex(HDialogArray)] - hdlgSTRResBeg[$$ArrayIndex(HDialogArray)]) / 8;
  330.                         key int = HMSTRResItemID;        /* helpType        */
  331.                         point;                            /* tip            */
  332.                         rect;                            /* hotRect        */
  333.                         integer;        /* Enabled dialog item message STR ID    */
  334.                         integer;        /* Disabled dialog item message STR ID    */
  335.                         integer;        /* Checked dialog item message STR ID    */
  336.                         integer;        /* other dialog item message STR ID        */    
  337. hdlgSTRResEnd:                        
  338.                     case HMSkipItem:
  339. hdlgSkipBeg:            integer = (hdlgSkipEnd[$$ArrayIndex(HDialogArray)] - hdlgSkipBeg[$$ArrayIndex(HDialogArray)]) / 8;
  340.                         key int = HMSkipItemID;
  341. hdlgSkipEnd:                        
  342.                 };
  343.         };
  344. };
  345.  
  346. /*----------------------------hwin • Help Mgr Window Balloon Template--------------------------*/
  347. type 'hwin' {
  348.         integer;                                    /* Help Version */
  349.         longint;                                    /* Options                */
  350.         integer = $$CountOf(HWinArray);                /* Count                */
  351.         array HWinArray {
  352.                 integer;            /* resource ID for help template         */
  353.                 literal longint;    /* res type of template (hdlg or hrct)    */
  354.                 integer;            /* len of comparison string             */
  355.                 pstring;            /* comparison string for window title    */
  356.                 align word;
  357.         };
  358. };
  359.  
  360. /*----------------------------hrct • Help Mgr Rectangle List Template-------------------------*/
  361. type 'hrct' {
  362.         integer;                                    /* Help Version         */
  363.         longint;                                    /* Options                */
  364.         integer;                                    /* Balloon ProcID        */
  365.         integer;                                     /* Balloon Variant        */
  366.         integer = $$CountOf(HRectArray);            /* Count of hrct Msgs    */
  367.  
  368.         array HRectArray {
  369.                 switch {
  370.                     case HMStringItem:
  371. hrctStringBeg:            integer = (hrctStringEnd[$$ArrayIndex(HRectArray)] - hrctStringBeg[$$ArrayIndex(HRectArray)]) / 8;
  372.                         key int = HMStringItemID;    /* helpType            */
  373.                         point;                        /* tip                */
  374.                         rect;                        /* hotRect            */
  375.                         pstring;                    /* STR255            */
  376.                         align word;                    /* keep aligned        */
  377. hrctStringEnd:
  378.                     case HMPictItem:
  379. hrctPictBeg:            integer = (hrctPictEnd[$$ArrayIndex(HRectArray)] - hrctPictBeg[$$ArrayIndex(HRectArray)]) / 8;
  380.                         key int = HMPictItemID;        /* helpType            */
  381.                         point;                        /* tip                */
  382.                         rect;                        /* hotRect            */
  383.                         integer;                    /* Picture Res ID    */
  384. hrctPictEnd:
  385.                     case HMStringResItem:
  386. hrctStringResBeg:        integer = (hrctStringResEnd[$$ArrayIndex(HRectArray)] - hrctStringResBeg[$$ArrayIndex(HRectArray)]) / 8;
  387.                         key int = HMStringResItemID;/* helpType            */
  388.                         point;                        /* tip                */
  389.                         rect;                        /* hotRect            */
  390.                         integer; integer;            /* STR# ID, index #    */
  391. hrctStringResEnd:
  392.                     case HMTEResItem:
  393. hrctTEResBeg:            integer = (hrctTEResEnd[$$ArrayIndex(HRectArray)] - hrctTEResBeg[$$ArrayIndex(HRectArray)]) / 8;
  394.                         key int = HMTEResItemID;    /* helpType            */
  395.                         point;                        /* tip                */
  396.                         rect;                        /* hotRect            */
  397.                         integer;                    /* TextEdit res ID    */
  398. hrctTEResEnd:
  399.                     case HMSTRResItem:
  400. hrctSTRResBeg:            integer = (hrctSTRResEnd[$$ArrayIndex(HRectArray)] - hrctSTRResBeg[$$ArrayIndex(HRectArray)]) / 8;
  401.                         key int = HMSTRResItemID;    /* helpType            */
  402.                         point;                        /* tip                */
  403.                         rect;                        /* hotRect            */
  404.                         integer;                    /* STR res ID        */
  405. hrctSTRResEnd:
  406.                     case HMSkipItem:
  407. hrctSkipBeg:            integer = (hrctSkipEnd[$$ArrayIndex(HRectArray)] - hrctSkipBeg[$$ArrayIndex(HRectArray)]) / 8;
  408.                         key int = HMSkipItemID;        /* skip item (leave a hole) */
  409.                         point;                        /* tip options (keep same structure as other items)    */
  410.                         rect;                        /* skip this rect            */
  411. hrctSkipEnd:
  412.                     case HMTrackControlStringItem:
  413. hrctTCStringBeg:        integer = (hrctTCStringEnd[$$ArrayIndex(HRectArray)] - hrctTCStringBeg[$$ArrayIndex(HRectArray)]) / 8;
  414.                         key int = HMStringItemID+HMTrackCntlID;
  415.                         point;                        /* tip                */
  416.                         rect;                        /* hotRect            */
  417.                         pstring;                    /* Enabled control message string        */
  418.                         pstring;                    /* Disabled control message string        */
  419.                         pstring;                    /* Checked control message string        */
  420.                         pstring;                    /* other control message string            */
  421.                         align word;                    /* keep aligned        */
  422. hrctTCStringEnd:                        
  423.                     case HMTrackControlPictItem:
  424. hrctTCPictBeg:            integer = (hrctTCPictEnd[$$ArrayIndex(HRectArray)] - hrctTCPictBeg[$$ArrayIndex(HRectArray)]) / 8;
  425.                         key int = HMPictItemID+HMTrackCntlID;
  426.                         point;                        /* tip                */
  427.                         rect;                        /* hotRect            */
  428.                         integer;                    /* Enabled control message pict ID        */
  429.                         integer;                    /* Disabled control message pict ID        */
  430.                         integer;                    /* Checked control message pict ID        */
  431.                         integer;                    /* other control message pict ID         */    
  432. hrctTCPictEnd:                        
  433.                     case HMTrackControlStringResItem:
  434. hrctTCStringResBeg:        integer = (hrctTCStringResEnd[$$ArrayIndex(HRectArray)] - hrctTCStringResBeg[$$ArrayIndex(HRectArray)]) / 8;
  435.                         key int = HMStringResItemID+HMTrackCntlID;
  436.                         point;                        /* tip                */
  437.                         rect;                        /* hotRect            */
  438.                         integer; integer;            /* Enabled STR# res ID, index #        */
  439.                         integer; integer;            /* Disabled STR# res ID, index #    */
  440.                         integer; integer;            /* Checked STR# res ID, index #        */
  441.                         integer; integer;            /* other STR# res ID, index #        */
  442. hrctTCStringResEnd:                        
  443.                     case HMTrackControlTEResItem:
  444. hrctTCTEResBeg:            integer = (hrctTCTEResEnd[$$ArrayIndex(HRectArray)] - hrctTCTEResBeg[$$ArrayIndex(HRectArray)]) / 8;
  445.                         key int = HMTEResItemID+HMTrackCntlID;
  446.                         point;                        /* tip                */
  447.                         rect;                        /* hotRect            */
  448.                         integer;                    /* Enabled TextEdit hdl spec ID        */
  449.                         integer;                    /* Disabled TextEdit hdl spec ID    */
  450.                         integer;                    /* Checked TextEdit hdl spec ID        */
  451.                         integer;                    /* other TextEdit hdl spec ID        */
  452. hrctTCTEResEnd:                        
  453.                     case HMTrackControlSTRResItem:
  454. hrctTCSTRResBeg:        integer = (hrctTCSTRResEnd[$$ArrayIndex(HRectArray)] - hrctTCSTRResBeg[$$ArrayIndex(HRectArray)]) / 8;
  455.                         key int = HMSTRResItemID+HMTrackCntlID;
  456.                         point;                        /* tip                */
  457.                         rect;                        /* hotRect            */
  458.                         integer;                    /* Enabled control message STR ID        */
  459.                         integer;                    /* Disabled control message STR ID        */
  460.                         integer;                    /* Checked control message STR ID        */
  461.                         integer;                    /* other control message STR ID            */    
  462. hrctTCSTRResEnd:                        
  463.                 };
  464.         };
  465. };
  466.  
  467.  
  468.  
  469. /*----------------------------hovr • Help Mgr Override Resource Template-------------------------*/
  470.  
  471. type 'hovr' {
  472.         integer;                                    /* Help Version */
  473.         longint;                                    /* Options */
  474.         integer;                                    /* Balloon ProcID */
  475.         integer;                                     /* Balloon variant */
  476.         integer = $$CountOf(HOverrideArray);        /* Count of array items (below) */
  477.  
  478.         switch {            /* Special Message for missing array items */
  479.                 case HMStringItem:
  480. hovrMissStringBeg:        integer = (hovrMissStringEnd - hovrMissStringBeg) / 8;
  481.                         key int = HMStringItemID;
  482.                         pstring;                /* missing HOverrideArray item  */
  483.                         align word;                /* always word align the code for the pstring */
  484. hovrMissStringEnd:                        
  485.                 case HMPictItem:
  486. hovrMissPictBeg:        integer = (hovrMissPictEnd - hovrMissPictBeg) / 8;
  487.                         key int = HMPictItemID;
  488.                         integer;                /* missing HOverrideArray item  */
  489. hovrMissPictEnd:
  490.                 case HMStringResItem:
  491. hovrMissStringResBeg:    integer = (hovrMissStringResEnd - hovrMissStringResBeg) / 8;
  492.                         key int = HMStringResItemID;
  493.                         integer; integer;        /* Miss or 0 HOverrideArray STR# res ID, index # */
  494. hovrMissStringResEnd:
  495.                 case HMTEResItem:
  496. hovrMissTEResBeg:        integer = (hovrMissTEResEnd - hovrMissTEResBeg) / 8;
  497.                         key int = HMTEResItemID;
  498.                         integer;                /* use for missing HOverrideArray items */
  499. hovrMissTEResEnd:
  500.                 case HMSTRResItem:
  501. hovrMissSTRResBeg:        integer = (hovrMissSTRResEnd - hovrMissSTRResBeg) / 8;
  502.                         key int = HMSTRResItemID;
  503.                         integer;                /* use for missing HOverrideArray items */
  504. hovrMissSTRResEnd:
  505.                 case HMSkipItem:
  506. hovrMissSkipBeg:        integer = (hovrMissSkipEnd - hovrMissSkipBeg) / 8;
  507.                         key int = HMSkipItemID;    /* use when there is no missing msg */
  508. hovrMissSkipEnd:                        
  509.             };
  510.             
  511.         array HOverrideArray {
  512.                 switch {
  513.                     case HMStringItem:
  514. hovrStringBeg:            integer = (hovrStringEnd[$$ArrayIndex(HOverrideArray)] - hovrStringBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  515.                         key int = HMStringItemID;
  516.                         pstring;            /* message string  */
  517.                         align word;
  518. hovrStringEnd:                        
  519.                     case HMPictItem:
  520. hovrPictBeg:            integer = (hovrPictEnd[$$ArrayIndex(HOverrideArray)] - hovrPictBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  521.                         key int = HMPictItemID;
  522.                         integer;            /* message pict ID  */
  523. hovrPictEnd:                                                
  524.                     case HMStringResItem:
  525. hovrStringResBeg:        integer = (hovrStringResEnd[$$ArrayIndex(HOverrideArray)] - hovrStringResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  526.                         key int = HMStringResItemID;
  527.                         integer; integer;    /* STR# res ID, index # */
  528. hovrStringResEnd:                        
  529.                     case HMTEResItem:
  530. hovrTEResBeg:            integer = (hovrTEResEnd[$$ArrayIndex(HOverrideArray)] - hovrTEResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  531.                         key int = HMTEResItemID;
  532.                         integer;            /* message TERes ID */
  533. hovrTEResEnd:                        
  534.                     case HMSTRResItem:
  535. hovrSTRResBeg:            integer = (hovrSTRResEnd[$$ArrayIndex(HOverrideArray)] - hovrSTRResBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  536.                         key int = HMSTRResItemID;
  537.                         integer;            /* message STR ID */
  538. hovrSTRResEnd:                        
  539.                     case HMSkipItem:
  540. hovrSkipBeg:            integer = (hovrSkipEnd[$$ArrayIndex(HOverrideArray)] - hovrSkipBeg[$$ArrayIndex(HOverrideArray)]) / 8;
  541.                         key int = HMSkipItemID;
  542. hovrSkipEnd:                        
  543.                 };
  544.         };
  545. };
  546.  
  547.  
  548. /*----------------------------hfdr • Help Mgr Finder Application Balloon Template-------------------------*/
  549. type 'hfdr' {
  550.         integer;                                    /* Help Version         */
  551.         longint;                                    /* Options                */
  552.         integer;                                    /* Balloon ProcID        */
  553.         integer;                                     /* Balloon Variant        */
  554.         integer = $$CountOf(HFdrArray);                /* Count of hfdr Msgs    */
  555.  
  556.         array HFdrArray {
  557.                 switch {
  558.                     case HMStringItem:
  559. hfdrStringBeg:            integer = (hfdrStringEnd[$$ArrayIndex(HFdrArray)] - hfdrStringBeg[$$ArrayIndex(HFdrArray)]) / 8;
  560.                         key int = HMStringItemID;    /* helpType            */
  561.                         pstring;                    /* STR255            */
  562.                         align word;                    /* keep aligned        */
  563. hfdrStringEnd:
  564.                     case HMPictItem:
  565. hfdrPictBeg:            integer = (hfdrPictEnd[$$ArrayIndex(HFdrArray)] - hfdrPictBeg[$$ArrayIndex(HFdrArray)]) / 8;
  566.                         key int = HMPictItemID;        /* helpType            */
  567.                         integer;                    /* Picture Res ID    */
  568. hfdrPictEnd:
  569.                     case HMStringResItem:
  570. hfdrStringResBeg:        integer = (hfdrStringResEnd[$$ArrayIndex(HFdrArray)] - hfdrStringResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  571.                         key int = HMStringResItemID;/* helpType            */
  572.                         integer; integer;            /* STR# ID, index #    */
  573. hfdrStringResEnd:
  574.                     case HMTEResItem:
  575. hfdrTEResBeg:            integer = (hfdrTEResEnd[$$ArrayIndex(HFdrArray)] - hfdrTEResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  576.                         key int = HMTEResItemID;    /* helpType            */
  577.                         integer;                    /* TextEdit res ID    */
  578. hfdrTEResEnd:
  579.                     case HMSTRResItem:
  580. hfdrSTRResBeg:            integer = (hfdrSTRResEnd[$$ArrayIndex(HFdrArray)] - hfdrSTRResBeg[$$ArrayIndex(HFdrArray)]) / 8;
  581.                         key int = HMSTRResItemID;    /* helpType            */
  582.                         integer;                    /* STR res ID        */
  583. hfdrSTRResEnd:
  584.                     case HMSkipItem:
  585. hfdrSkipBeg:            integer = (hfdrSkipEnd[$$ArrayIndex(HFdrArray)] - hfdrSkipBeg[$$ArrayIndex(HFdrArray)]) / 8;
  586.                         key int = HMSkipItemID;        /* skip item (leave a hole) */
  587. hfdrSkipEnd:
  588.                 };
  589.         };
  590. };
  591.  
  592.  
  593. #endif /* __BALLOONS_R__ */
  594.  
  595.